The developments described in this section are known to the inventors. However, unless otherwise indicated, it should not be assumed that any of the developments described in this section qualify as prior art merely by virtue of their inclusion in this section, or that those developments are known to a person of ordinary skill in the art.
In computer software development, source code management systems (also called revision control or version control systems) are used to track and manage computer program source code as the code is written and revised. For readability, the acronym “SCM” will be used in place of “source code management”, and although SCM systems are predominantly used to track source code they can be used to track other data.
Examples of SCM systems include systems such as MERCURIAL and GIT. Generally speaking, SCM systems store data—typically source code—in repositories and facilitate access to that data from multiple different client systems. In order to work on a project, a user (using a client system) creates a local copy of the relevant data (e.g. program source code) from a repository and works on that local copy. If the user makes changes that are to be incorporated into the remote version of the data, the user's local copy of the data—or at least those portions that have been changed—is written back to the repository using the SCM system. The SCM system controls access to the repository data and also manages version control for the data.
SCM systems typically manage and track numerous documents/source code files across multiple repositories and for numerous users. Furthermore, the documents/files managed by SCM systems can be changed frequently as users add new documents/files, delete documents/files, and make changes to existing documents/files. To illustrate this, consider Bitbucket (commercially available from Atlassian Pty Ltd) which provides a web-based interface to Git repositories (SCMs). Bitbucket supports up to 20,000 users and thousands of repositories that store approximately 3.5 million repositories.
Given the potentially huge numbers of repositories, documents/files and users, and the frequency with which changes are being made to those documents/files, providing search functionality for SCM systems can be challenging.